package com.atguigu.file;

import org.junit.Test;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterTest {
    /*
    从内存中写出数据到硬盘的文件里
    说明:
    1.输出操作，对应的File可以不存在。如果不存在，在输出的过程中，会自动创建此文件
              如果存在，如果流使用的构造器是FileWriter(file,false)/FileWriter(file),对原有文件的覆盖
              如果流使用的构造器是FileWriter(file,true),则不会覆盖，而会在原有文件的基础进行内容的追加
     */
    @Test
    public void test() throws IOException {
        //1.提供File类对象,指明写出到的文件
        File file=new File("hello.txt");
        //2.提供FileWriter的对象，用于数据的写出
        FileWriter fw=new FileWriter(file);
        //3.写出的操作
        fw.write("I have a dream\n".toCharArray());   //覆盖文件的内容
        fw.write("you should also have a dream");
        //4.流资源的关闭操作
        fw.close();
    }
    @Test
    public void test1(){
        FileReader fileReader= null;
        FileWriter fileWriter= null;
        try {
            //1.创建File类对象,指明读入和写出的文件
            File srcFile=new File("hello.txt");
            File desFile=new File("hello1.txt");
            //2.创建输出和输入流对象
            fileReader = new FileReader(srcFile);
            fileWriter = new FileWriter(desFile);
            //3.数据的读入和写出操作
            char[] ch=new char[5];
            int len; //读入到数组中的字符个数
            while((len=fileReader.read(ch))!=-1){
                fileWriter.write(ch,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4.关闭流资源
            try {
                if (fileWriter != null) {
                    fileWriter.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(fileReader!=null) {
                    fileReader.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}
